﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Elegant;
using System.IO;
using System.Xml;
using System.Threading;
using System.Globalization;

namespace Elegant2
{
    static class Program
    {

        #region Seleciona Linguagem
        /// <summary>
        /// Método responsavel pela criação e seleção 
        /// do arquivo de linguagem do sistema.
        /// 
        /// Inglês
        /// Method responsible for the creation and 
        /// selection the file the language the system.
        /// </summary>
        static void selecionaLinguagem()
        {
            //Pega o caminho onde o Sistema esta alocado.
            string caminho = Application.StartupPath;

            //Cria pasta de Configurações e arquivos do Sistema. 
            DirectoryInfo diretorio = Directory.CreateDirectory(caminho + @"\Teste");

            //Verifica se o arquivo já foi criado.
            bool verificaLinguagem = File.Exists(caminho + @"\Teste\Linguagem.xml");

            //Se o arquivo ainda não estiver criado ele cria um novo arquivo.
            if (verificaLinguagem == false)
            {
                //Cria o arquivo de Configuração de linguas.
                //StreamReader srLinguagem = new StreamReader(File.Create(@"C:\Documents and Settings\Softex 03\Meus documentos\TesteElegant\Linguagem.txt"));
                StreamReader srLinguagem = new StreamReader(File.Create(caminho + @"\Teste\Linguagem.xml"));
                srLinguagem.Close();

                //Seleciona no arquivo a linguagem Default a ser iniciada.
                XmlTextWriter xmlPortugues = new XmlTextWriter(caminho + @"\Teste\Linguagem.xml", null);

                xmlPortugues.Formatting = Formatting.Indented;
                xmlPortugues.Indentation = 6;
                xmlPortugues.Namespaces = false;

                xmlPortugues.WriteStartDocument();
                xmlPortugues.WriteStartElement("", "Linguagem", "");
                xmlPortugues.WriteString("pt-br");

                xmlPortugues.WriteEndElement();
                xmlPortugues.Flush();
                xmlPortugues.Close();
            }

            /*
             * Pega o arquivo que foi criado anteriormente com a 
             * configuração da linguagem a qual o sistema deve ser 
             * iniciado, e adiciona na CultureInfo.
             */
            XmlTextReader xmlLinguagemSelecao = new XmlTextReader(caminho + @"\Teste\Linguagem.xml");
            string lingua = "";
            while (xmlLinguagemSelecao.Read())
            {
                switch (xmlLinguagemSelecao.NodeType)
                {
                    case XmlNodeType.Text:
                        lingua = xmlLinguagemSelecao.Value;
                        break;
                }
            }

            /*
             * Faz com que o Form seja iniciado com 
             * a linguagem posteriormente selecionada.
             */
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(lingua);
        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            selecionaLinguagem();
            Application.Run(new frmPrincipal());
        }
    }
}
